package cn.e4j.modular.crm.service.impl;

import cn.e4j.core.dto.Dtos;
import cn.e4j.core.dto.impl.Dto;
import cn.e4j.core.shiro.ShiroKit;
import cn.e4j.core.shiro.ShiroUser;
import cn.e4j.modular.crm.entity.GwahT;
import cn.e4j.modular.crm.entity.GwahlT;
import cn.e4j.modular.crm.mapper.GwahTMapper;
import cn.e4j.modular.crm.service.GwahTService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author yuhuan
 * @since 2019-01-09
 */
@Service
public class GwahTServiceImpl extends ServiceImpl<GwahTMapper, GwahT> implements GwahTService {

    @Autowired
    GwahTMapper gwahTMapper;

    @Transactional(readOnly = true)
    public List<Map<String, Object>> getList(Page<Object> page, Dto dto) {

        List<Map<String, Object>> gwahDtos = this.baseMapper.listPage(page, dto);

        return gwahDtos;
    }

    @Override
    public GwahT getByKey(String GWAH001) {
        return this.baseMapper.getByKey(GWAH001);
    }

    /**
     * 增加
     *
     * @param gwahT,gwahlT
     * @return
     */
    @Transactional
    public void add(GwahT gwahT, GwahlT gwahlT) {
        gwahT.insert();
        gwahlT.insert();
    }

    /**
     * 修改
     *
     * @param dto
     * @return
     */
    @Transactional
    public void edit(Dto dto) {
        gwahTMapper.updateGwah(dto);
        gwahTMapper.updateGwahl(dto);
    }

    /**
     * 删除
     *
     * @param dto
     * @return
     */
    @Transactional
    public void del(Dto dto) {
        gwahTMapper.deleteGwah(dto);
        gwahTMapper.deleteGwahl(dto);
    }

    @Transactional
    public void deleteDataBatch(List<GwahT> gwahTList) {
        ShiroUser user = ShiroKit.getUser();
        for (GwahT gwahT : gwahTList) {
            Dto inDto = Dtos.newDto();
            inDto.put("GWAHENT",user.getDBC());
            inDto.put("GWAH001",gwahT.getGWAH001());
            gwahTMapper.deleteGwah(inDto);
            gwahTMapper.deleteGwahl(inDto);
        }
    }
}
